home *** CD-ROM | disk | FTP | other *** search
- package symantec.itools.awt.util;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.LayoutManager;
- import java.awt.Panel;
- import java.awt.Rectangle;
- import java.util.Date;
- import symantec.itools.awt.ComboBox;
- import symantec.itools.awt.NumericSpinner;
-
- public class Calendar extends Panel {
- private ComboBox combo;
- private boolean bNeedsPlatformHelp;
- // $FF: renamed from: sc symantec.itools.awt.NumericSpinner
- private NumericSpinner field_0;
- private Date dCurrent;
- private Date dLast;
- private Color selectedColor;
- private String[][] cal;
- private int dateSelectedx;
- private int dateSelectedy;
- private int lastSelectedDate;
- private int maxMonthx;
- private int maxMonthy;
- private int firstDay;
- private int topRow;
- private int selectHeight;
- private int centerNumber;
- private int heightAdjust;
- private int numberAdjust;
-
- public Calendar() {
- this(new Date());
- }
-
- public Calendar(Date var1) {
- this.dateSelectedx = -1;
- this.dateSelectedy = -1;
- this.lastSelectedDate = -1;
- this.maxMonthx = -1;
- this.maxMonthy = -1;
- this.firstDay = -1;
- this.topRow = -1;
- this.selectHeight = -1;
- this.centerNumber = -1;
- this.heightAdjust = -1;
- this.numberAdjust = -1;
- ((Container)this).setLayout((LayoutManager)null);
- this.bNeedsPlatformHelp = ComboBox.needsPlatformHelp();
- this.dCurrent = var1;
- this.dLast = this.dCurrent;
- this.combo = new ComboBox();
- this.combo.addItem("January");
- this.combo.addItem("February");
- this.combo.addItem("March");
- this.combo.addItem("April");
- this.combo.addItem("May");
- this.combo.addItem("June");
- this.combo.addItem("July");
- this.combo.addItem("August");
- this.combo.addItem("September");
- this.combo.addItem("October");
- this.combo.addItem("November");
- this.combo.addItem("December");
- ((Container)this).add(this.combo);
- this.field_0 = new NumericSpinner();
- ((Container)this).add(this.field_0);
- this.field_0.setMin(1900);
- this.field_0.setMax(9999);
- this.field_0.setCurrent(1900 + this.dCurrent.getYear());
- this.field_0.setEditable(false);
- this.combo.select(this.dCurrent.getMonth());
- this.selectedColor = Color.blue;
- if (this.bNeedsPlatformHelp) {
- ((Component)this).setFont(new Font("Dialog", 0, 9));
- } else {
- ((Component)this).setFont(new Font("Dialog", 1, 10));
- }
- }
-
- public String getDate() {
- return this.dCurrent.toString();
- }
-
- public void setDate(String var1) {
- try {
- this.dCurrent = new Date(var1);
- } catch (Exception var2) {
- this.dCurrent = new Date();
- }
-
- ((Component)this).invalidate();
- }
-
- public Color getSelectedColor() {
- return this.selectedColor;
- }
-
- public void setSelectedColor(Color var1) {
- this.selectedColor = var1;
- ((Component)this).invalidate();
- }
-
- public boolean handleEvent(Event var1) {
- byte var2 = -1;
- switch (var1.id) {
- case 501:
- if (this.bNeedsPlatformHelp) {
- var2 = 70;
- this.centerNumber = 14;
- this.heightAdjust = 6;
- this.numberAdjust = 6;
- } else {
- var2 = 40;
- this.centerNumber = 12;
- this.heightAdjust = 2;
- this.numberAdjust = 0;
- }
-
- Rectangle var3 = ((Component)this).bounds();
- int var4 = (var3.height - var2 - 14) / 7;
- int var5 = (var3.width - 32) / 7;
- if (var1.x >= 15 && var1.x < var3.width - 15 && var1.y >= var2 + var4 && var1.y < var3.height - 14) {
- this.dateSelectedx = (var1.x - 16) / var5;
- this.dateSelectedy = (var1.y - var2 - var4) / var4;
- ((Component)this).repaint();
- this.firstDay = -1;
- }
- break;
- case 1001:
- if (var1.target instanceof ComboBox) {
- int var6 = this.dCurrent.getDate();
- int var7 = this.combo.getSelectedIndex();
- int var8 = this.dCurrent.getYear();
-
- for(this.dCurrent = new Date(var8, var7, var6); this.dCurrent.getMonth() != var7; this.lastSelectedDate = -1) {
- --var6;
- this.dCurrent = new Date(var8, var7, var6);
- }
-
- this.firstDay = -1;
- ((Component)this).repaint();
- }
-
- if (var1.target == this.field_0) {
- int var10 = this.dCurrent.getDate();
- int var11 = this.dCurrent.getMonth();
- int var12 = this.field_0.getCurrent() - 1900;
-
- for(this.dCurrent = new Date(var12, var11, var10); this.dCurrent.getMonth() != var11; this.lastSelectedDate = -1) {
- --var10;
- this.dCurrent = new Date(var12, var11, var10);
- }
-
- this.firstDay = -1;
- ((Component)this).repaint();
- }
- }
-
- return super.handleEvent(var1);
- }
-
- boolean isLeapYear(int var1) {
- return var1 % 4 == 0 && var1 != 2100;
- }
-
- public void reshape(int var1, int var2, int var3, int var4) {
- this.field_0.reshape(var3 - 100, 7, 100, 30);
- super.reshape(var1, var2, var3, var4);
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- public void paint(Graphics var1) {
- this.field_0.setBackground(((Component)this).getBackground());
- this.field_0.repaint();
- FontMetrics var2 = ((Component)this).getFontMetrics(((Component)this).getFont());
- Rectangle var3 = ((Component)this).bounds();
- if (this.bNeedsPlatformHelp) {
- this.combo.reshape(12, 20, 100, 34);
- this.topRow = 70;
- this.selectHeight = var2.getHeight() + 2;
- this.centerNumber = 14;
- this.heightAdjust = 6;
- this.numberAdjust = 6;
- } else {
- this.combo.reshape(12, 10, 100, 25);
- this.topRow = 40;
- this.selectHeight = var2.getHeight();
- this.centerNumber = 12;
- this.heightAdjust = 2;
- this.numberAdjust = 0;
- }
-
- int var4 = (var3.width - 32) / 7;
- int var5 = (var3.height - this.topRow - 16) / 7;
- int var6 = var4 - var2.stringWidth("S") / 2;
- int var7 = this.topRow + this.centerNumber;
- if (this.dateSelectedx < 0) {
- var1.setColor(Color.black);
- var1.drawLine(15, this.topRow, var3.width - 17, this.topRow);
- var1.setColor(Color.lightGray);
- var1.drawLine(15, this.topRow + 7 * var5, var3.width - 18, this.topRow + 7 * var5);
- var1.setColor(Color.white);
- var1.drawLine(16, this.topRow + 1 + 7 * var5, var3.width - 17, this.topRow + 1 + 7 * var5);
- var1.setColor(Color.black);
- var1.drawLine(15, this.topRow, 15, this.topRow + 7 * var5);
- var1.setColor(Color.lightGray);
- var1.drawLine(var3.width - 17, this.topRow, var3.width - 17, this.topRow + 7 * var5);
- var1.setColor(Color.white);
- var1.drawLine(var3.width - 16, this.topRow, var3.width - 16, this.topRow + 7 * var5);
- var1.fillRect(16, this.topRow + var5, var3.width - 33, 6 * var5 + 1);
- var1.setColor(Color.gray);
- var1.fillRect(16, this.topRow + 1, var3.width - 32, var5 - 2);
- var1.setColor(Color.white);
- var1.drawString("S", var6, var7 - 1);
- var6 = 2 * var4 - var2.stringWidth("M") / 2;
- var1.drawString("M", var6, var7 - 1);
- var6 = 3 * var4 - var2.stringWidth("T") / 2;
- var1.drawString("T", var6, var7 - 1);
- var6 = 4 * var4 - var2.stringWidth("W") / 2;
- var1.drawString("W", var6, var7 - 1);
- var6 = 5 * var4 - var2.stringWidth("T") / 2;
- var1.drawString("T", var6, var7 - 1);
- var6 = 6 * var4 - var2.stringWidth("F") / 2;
- var1.drawString("F", var6, var7 - 1);
- var6 = 7 * var4 - var2.stringWidth("S") / 2;
- var1.drawString("S", var6, var7 - 1);
- }
-
- new Date(this.dCurrent.getYear(), this.dCurrent.getMonth(), 1);
- Date var8 = new Date(this.dCurrent.getYear(), this.dCurrent.getMonth(), 1);
- if (this.firstDay < 0) {
- this.firstDay = var8.getDay();
- }
-
- int var9 = -1;
- int var10 = 1;
- int var11 = -1;
- int var12 = this.dCurrent.getMonth() + 1;
- if (this.lastSelectedDate < 1) {
- var9 = this.dCurrent.getDate();
- } else if (this.dateSelectedx < 0) {
- var9 = this.lastSelectedDate;
- }
-
- var1.setColor(Color.black);
-
- label161:
- for(int var13 = 0; var13 < 6; ++var13) {
- for(int var14 = 0; var14 < 7; ++var14) {
- if (this.maxMonthy < this.dateSelectedy || this.maxMonthy == this.dateSelectedy && this.maxMonthx < this.dateSelectedx) {
- this.dateSelectedx = -1;
- this.dateSelectedy = -1;
- break label161;
- }
-
- if (var13 == 0 && var14 < this.firstDay) {
- if (this.dateSelectedx == var14 && this.dateSelectedy == var13) {
- this.dateSelectedx = -1;
- this.dateSelectedy = -1;
- break label161;
- }
- } else {
- var6 = (var14 + 1) * var4 - var2.stringWidth(Integer.toString(var10)) / 2;
- var7 = this.topRow + this.heightAdjust + 4 + this.numberAdjust + ((var13 + 2) * var5 - var2.getHeight());
- if (this.dateSelectedx < 0 && var9 != var10) {
- if (var10 < 10) {
- var1.drawString(Integer.toString(var10), var6, var7);
- } else {
- var1.drawString(Integer.toString(var10), var6, var7);
- }
- } else if ((this.dateSelectedx != var14 || this.dateSelectedy != var13) && var9 != var10) {
- if (var10 == this.lastSelectedDate) {
- var1.setColor(Color.white);
- if (var10 < 10) {
- var1.fillRect(var6, var7 - this.selectHeight + this.heightAdjust, var2.stringWidth(Integer.toString(var10)) + 2, this.selectHeight);
- } else {
- var1.fillRect(var6, var7 - this.selectHeight + this.heightAdjust, var2.stringWidth(Integer.toString(var10)), this.selectHeight);
- }
-
- var1.setColor(Color.black);
- if (var10 < 10) {
- var1.drawString(Integer.toString(var10), var6, var7);
- } else {
- var1.drawString(Integer.toString(this.lastSelectedDate), var6, var7);
- }
-
- this.lastSelectedDate = -1;
- }
- } else {
- if (this.dateSelectedx == var14 && this.dateSelectedy == var13) {
- this.dCurrent = new Date(this.dCurrent.getYear(), this.dCurrent.getMonth(), var10);
- this.dCurrent = new Date(this.dCurrent.getYear(), this.dCurrent.getMonth(), var10);
- }
-
- var1.setColor(this.selectedColor);
- if (var10 < 10) {
- var1.fillRect(var6, var7 - this.selectHeight + this.heightAdjust, var2.stringWidth(Integer.toString(var10)) + 2, this.selectHeight);
- } else {
- var1.fillRect(var6, var7 - this.selectHeight + this.heightAdjust, var2.stringWidth(Integer.toString(var10)), this.selectHeight);
- }
-
- var1.setColor(Color.white);
- if (var10 < 10) {
- var1.drawString(Integer.toString(var10), var6, var7);
- } else {
- var1.drawString(Integer.toString(var10), var6, var7);
- }
-
- var11 = var10;
- var1.setColor(Color.black);
- }
-
- if (var10 >= 31) {
- this.maxMonthx = var14;
- this.maxMonthy = var13;
- break label161;
- }
-
- if (var10 >= 30 && (var12 == 4 || var12 == 6 || var12 == 9 || var12 == 11)) {
- this.maxMonthx = var14;
- this.maxMonthy = var13;
- break label161;
- }
-
- if (var10 >= 29 && var12 == 2) {
- this.maxMonthx = var14;
- this.maxMonthy = var13;
- break label161;
- }
-
- if (var10 >= 28 && var12 == 2 && !this.isLeapYear(this.dCurrent.getYear())) {
- this.maxMonthx = var14;
- this.maxMonthy = var13;
- break label161;
- }
-
- ++var10;
- }
- }
- }
-
- if (this.lastSelectedDate < 0) {
- this.lastSelectedDate = var11;
- }
-
- this.dateSelectedx = -1;
- this.dateSelectedy = -1;
- if (!this.dLast.equals(this.dCurrent)) {
- this.dLast = this.dCurrent;
- Container var23 = ((Component)this).getParent();
- if (var23 != null) {
- ((Component)var23).postEvent(new Event(this, 1001, this.dCurrent));
- }
- }
-
- }
-
- public Dimension preferredSize() {
- return new Dimension(250, 200);
- }
-
- public Dimension minimumSize() {
- return new Dimension(250, 200);
- }
- }
-